package trastienda.bean;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import trastienda.dao.RolDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Rol;

public class RolBean {

	private String rolNombre;
	private String descripcion;

	public String getRolNombre() {
		return rolNombre;
	}

	public void setRolNombre(String rolNombre) {
		this.rolNombre = rolNombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String listar() {
		System.out.println("RolBean: listar()");
		RolDAO dao = new RolDAO();
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpSession session = (HttpSession) context.getSession(true);
		try {
			session.setAttribute("ROLES_LISTADO", dao.listar());
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "rolBean_listar";
	}

	public String eliminar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		System.out.println(request.getParameter("rolNombre"));
		RolDAO dao = new RolDAO();
		try {
			dao.eliminar(request.getParameter("rolNombre"));
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String editar() {
		ExternalContext context = FacesContext.getCurrentInstance()
				.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) context.getRequest();
		RolDAO dao = new RolDAO();
		try {
			Rol rol = dao.obtener(request.getParameter("rolNombre"));
			System.out.println(rol.getRolNombre());
			System.out.println(rol.getDescripcion());
			request.setAttribute("rolBean", rol);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return "rolBean_editar";
	}

	public String nuevo() {
		return "rolBean_nuevo";
	}

	public String insertar() {
		System.out.println(rolNombre);
		System.out.println(descripcion);
		Rol vo = new Rol();
		vo.setRolNombre(rolNombre);
		vo.setDescripcion(descripcion);

		RolDAO dao = new RolDAO();
		try {
			dao.insertar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}

	public String actualizar() {
		Rol vo = new Rol();
		vo.setRolNombre(rolNombre);
		vo.setDescripcion(descripcion);

		RolDAO dao = new RolDAO();
		try {
			dao.actualizar(vo);
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage("Hubo un problema: " + e.getMessage()));
			return "error";
		}
		return listar();
	}
}
